//
//  HHRefreshViewController.h
//  HHBroker
//
//  Created by Herui on 9/5/15.
//  Copyright © 2015 harry. All rights reserved.
//

#import "HHBaseTableViewController.h"
#import "MJRefresh.h"
#import "HttpRequestManager.h"

@interface HHRefreshViewController : HHBaseTableViewController

typedef enum {
    HHRefreshStateNormal = 1,      // 正常刷新, 视图第一次出现加载数据
    HHRefreshStatePullDown = 2,    // 下拉刷新
    HHRefreshStatePulUp = 3,       // 上拉加载
} HHRefreshState;

/**
 *  tableView对应的上拉刷新视图
 */
@property (nonatomic, strong) MJRefreshHeaderView *headerView;

/**
 *  tableView对应的下拉刷新视图
 */
@property (nonatomic, strong) MJRefreshFooterView *footerView;

@property (nonatomic, assign) NSInteger page;
@property (nonatomic, assign) NSInteger count;



/**
 *  是否第一次出现, 由于某些视图设置了table 的内容偏移, 会
 *  导致自动调用scrollView 的 delegate
 */
@property (nonatomic, assign) BOOL notFirstAppear;
/**
 *  是否正在刷新
 */
@property (nonatomic, assign) BOOL isRefreshing;
/**
 *  是否需要显示刷新控件
 */
@property (nonatomic, assign) BOOL isNotRefreshData;

/**
 *  滚动到顶部
 */
- (void)scrollToTop;

/**
 *  重要 : 加载数据源统一调用这个方法
 *  @param state 刷新状态
 *
 */
- (void)loadTableViewDataSourceWithState:(HHRefreshState)state;


/**
 *  从服务器请求数据后, 使刷新控件停止刷新调用的方法
 */
- (void)endRefreshing;

/**
 *  解析网络下载数据, 子类负责实现
 *
 *  @param response 网络下载数据
 *  @param tag      1:正常加载(视图第一次进入加载)
 *                  2:下拉刷新
 *                  3:上拉加载更多
 */
- (void)getJSONWithResponse:(id)response tag:(NSInteger)tag;

@end

